package be.ipl.finito.usecases;

import java.util.List;

import javax.ejb.Remote;

import be.ipl.finito.domaine.Grille;
import be.ipl.finito.domaine.Jeton;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;

@Remote
public interface GestionPartie {

	Partie chargerTout(Partie partie);

	boolean commencerPartie(Partie partie);

	Partie creerPartie(String nom);

	boolean estEnCours(Partie partie);

	List<Joueur> listerJoueurs(Partie partie);

	List<Partie> listerParties();

	List<Partie> listerPartiesEnAttente();

	Partie rechercherPartie(String nom);

	Partie rechercherPartie(int id);

	boolean rejoindrePartie(Partie partie, Joueur joueur);

	boolean terminerPartie(Partie partie);

	List<Joueur> calculerVainqueur(Partie partie);

	boolean lancerDe(Partie partie);

	Grille getGrille(Partie partie, Joueur joueur);

	boolean rejoindrePartie(Partie partie, Grille grille);

	int nombreJoueurs(Partie p);

	Partie modifierEtatPartie(Partie partie);

	boolean ajouterUnJetonJoue(Jeton jeton, Partie partie,
			int positionChoisieParLeServeur);

}
